/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo.personas.profesionales;

import java.util.HashMap;
import java.util.List;
import modelo.CriterioBusqueda;
import modelo.GestorModelo;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Raul
 */
public class GestorEspecialidad extends GestorModelo<Especialidad> {
    private String [] filtros = {"Nombre"};
    private HashMap<String, String> mapFiltros;

    public GestorEspecialidad() {
        mapFiltros = new HashMap();
        mapFiltros.put("Nombre", "nombre");
    }

    @Override
    public void eliminar() {
        getModelo().setEstado(ELIMINADO);
        this.actualizar();
    }

    @Override
    public void crearModelo() {
        super.setModelo(new Especialidad());
    }

    public List listarEspecialidades(){
        return super.listarClase(Especialidad.class);
    }

    public String[] getFiltros() {
        return filtros;
    }
    
     public List buscar(String texto, String criterioDeBusqueda){
        return getSession().createCriteria(Especialidad.class)
                .add(Restrictions.eq("estado", ACTIVO))
                .add(Restrictions.ilike(mapFiltros.get(criterioDeBusqueda), texto, MatchMode.ANYWHERE))
                .addOrder(Order.asc("nombre"))
                .list();
    }

    @Override
    public boolean noExiste() {
        return getSession().createCriteria(Especialidad.class)
                .add(Restrictions.eq("nombre", getModelo().getNombre()))
                .list().isEmpty();
    }

    @Override
    protected Especialidad clonar(Especialidad modelo) throws CloneNotSupportedException {
        return (Especialidad) modelo.clone();
    }

    @Override
    public List buscar(CriterioBusqueda[] criterios) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
